package com.hanser.hancoder.ai.model.message;

import dev.langchain4j.agent.tool.ToolExecutionRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * 工具调用消息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
/**
 * 工具调用消息
 * <p>
 * 用于表示AI请求调用某个工具时的消息格式，包含工具的ID、名称和参数信息。
 * </p>
 */
public class ToolRequestMessage extends StreamMessage {

    /**
     * 工具执行请求的唯一标识符
     */
    private String id;

    /**
     * 要调用的工具名称
     */
    private String name;

    /**
     * 工具调用所需的参数，通常为JSON格式字符串
     */
    private String arguments;

    /**
     * 构造函数，根据{@link ToolExecutionRequest}对象初始化工具请求消息
     *
     * @param toolExecutionRequest 工具执行请求对象，包含工具调用的相关信息
     */
    public ToolRequestMessage(ToolExecutionRequest toolExecutionRequest) {
        super(StreamMessageTypeEnum.TOOL_REQUEST.getValue());
        this.id = toolExecutionRequest.id();
        this.name = toolExecutionRequest.name();
        this.arguments = toolExecutionRequest.arguments();
    }
}
